Skip to content

release: promote staging to main - #587

Open
izadoesdev wants to merge 132 commits into
mainfrom
staging
Open

release: promote staging to main#587
izadoesdev wants to merge 132 commits into
mainfrom
staging

Conversation

@izadoesdev

@izadoesdev izadoesdev commented Aug 2, 2026

Copy link
Copy Markdown
Member

Summary

  • Promote the current staging release train to main.
  • This release contains 134 commits across 333 files, including Intelligence recommendations and investigations, Links delivery/redirect reliability, ingestion and worker hardening, SDK/tracker improvements, ClickHouse delivery-deduplication migrations, and dashboard/docs updates.
  • The production promotion also includes the recent Basket retry safeguards, durable Uptime relays, and service-deployment context fixes.

Validation

  • The changes were integrated through the existing staging PR flow.
  • This promotion PR will run the main-targeted CI checks before merge.

Release notes

  • Review the included database and ClickHouse migration changes as part of the production rollout.

Summary by cubic

Promotes the current staging release to main with deep‑link redirects and app‑validated targets, a dedicated Insights Recommendations view, and hardened ingest with stable delivery IDs, API‑key admission gates, and retryable pixel delivery. Adds CI canaries for links/vector and new LINKS_URL/NEXT_PUBLIC_LINKS_URL environment variables.

  • New Features

    • Split Insights into Investigations and Recommendations with measurement drafts (goals, funnels, instrumentation), actionable flows, counts, a shared shell, and only the current published recommendation per signal; diversified scheduled coverage and clearer run status.
    • Added deep‑link redirects and public link URL helpers with app‑specific HTTPS validation, public‑slug guards, cached lookups, per‑IP rate limits using trusted client IPs, queued visit delivery, and health checks; updated OG to LINKS_BASE_URL, QR/preview, and navigation/search.
  • Bug Fixes

    • Ingest delivery hardening: bounded Kafka operations and health probes with a shutdown budget, ClickHouse direct fallback keyed by delivery IDs with pending/ambiguous reservations, accept eventId to keep stable span/custom‑event identities, CORS‑safe JSON for unload beacons, and a retryable tracking pixel with Retry-After.
    • API admission: per‑key rate limits and in‑flight gates with retryable responses; auth dependency outages return 503 with Retry-After without exposing keys; consistent not‑found and webhook 4xx/401/404 responses with structured errors.
    • Links and image proxy safety: bounded redirect queue admission and cached lookups, per‑IP rate limiting using trusted client IPs, and a safer image proxy with SSRF guard and protocol‑relative handling.
    • Dashboard polish and accessibility: preserve onboarding attribution through signup and setup, enforce @databuddy/ui usage, improve badges/labels and ARIA (including breadcrumbs and collapsed badges), and refine navigation with clearer Insights tabs.

Written for commit 035bf36. Summary will update on new commits.

Review in cubic

@greptile-apps

greptile-apps Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Too many files changed for review. (333 files found, 100 file limit)

Bypass the limit by tagging @greptile-apps to review.

@cursor

cursor Bot commented Aug 2, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@vercel

vercel Bot commented Aug 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
databuddy-status Ready Ready Preview Aug 4, 2026 8:42pm
documentation (staging) Ready Ready Preview Aug 4, 2026 8:42pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
dashboard (staging) Skipped Skipped Aug 4, 2026 8:42pm

@coderabbitai

coderabbitai Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b2678282-c30d-4a1a-8e3b-7203d4bfdd60

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@dosubot

dosubot Bot commented Aug 2, 2026

Copy link
Copy Markdown

📄 Knowledge review

Dosu skipped reviewing this PR because your organization has used its 200 included credits for the month. Your usage will reset on 2026-09-01. To have Dosu review this PR before then, ask your organization admin to upgrade to a pro account.


Leave Feedback Ask Dosu about Databuddy Add Dosu to your team

@unkey-deploy

unkey-deploy Bot commented Aug 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Unkey Deploy

Name Status Preview Inspect Updated (UTC)
links (preview) Ready Visit Preview Inspect Aug 4, 2026 8:41pm

* fix(basket): classify expected client errors as warn in axiom drain

Expected 4xx conditions (quota exceeded, rate limits, invalid client
IDs) were logged at error level because the evlog elysia plugin logs
every thrown error as error and drops the status. Derive the client
error message set from the error catalog and downgrade those events to
warn in the drain, keyed on http_status or the catalog message.

* fix(basket): log redpanda to clickhouse fallback as warn, not error

The fallback recovers the delivery via direct ClickHouse insert, so a
connection failure that is handled should not surface as an error in
Axiom. Log it via log.warn and assert the new channel in the test.

* refactor(basket): extract axiom drain helpers to @databuddy/shared/evlog-axiom

Move the batched Axiom drain, HTTP enrichers, string/duration
normalization, and the client-error downgrade into a shared module so
basket (and future services) reuse them. Basket keeps its catalog-driven
client-error detection and delegates the mechanics to the shared helpers.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant